IICSでGoogle Cloud Storageに接続してみる
データアナリティクス事業本部、池田です。
Informatica Intelligent Cloud Services(以下IICS)からGoogleのストレージである
Cloud Storage (以下GCS)の
コネクタ
を使ってみます。
GCP側の準備(サービス アカウントの作成)
ガイドのこの辺
を参考にGoogle Cloud Platform(GCP)の
サービス アカウント
を作成します。
作成後の画面で、IICSに設定するための鍵(JSONファイル)を追加・ダウンロードしておきます。
作成時に、 ロール
には ストレージ管理者
を指定しました。
「IAMと管理」>「IAM」からロールの確認と変更ができます。
オブジェクトの閲覧と作成(今回はGCSからファイルを読んで、GCSに書き出します)の権限に加え、
storage.buckets.list
権限が必要になるので、今回は検証目的ということでストレージ管理者を付与しました。
実際の開発では、 カスタムロール
を作成するなど、もう少し細かい管理をした方が良さそうです。
使用するGCSのファイル
使うバケットは、↓こんな感じです。
今回は BigQuery の一般公開データセット
から出生データの natality
サンプルテーブルをGCSへエクスポートして、
入力データとして使ってみます。
クリックでSQLを表示する/折りたたむ
EXPORT DATA OPTIONS( uri='gs://{バケット名}/input/natality-*.csv', format='CSV', header=true, field_delimiter=',' ) AS SELECT source_year, year, month, day, wday, state, is_male, child_race, weight_pounds, plurality FROM `bigquery-public-data.samples.natality`;
input
フォルダに 137,826,763
行のCSVデータが69ファイルに分割されて配置されています。
今回はIICSを使ってこのデータを Parquet形式
に変換して、同じバケット内の output
フォルダに書き出してみます。
接続してみる
コネクタの有効化
「アドオンコネクタ」からコネクタを有効化します。
接続の作成
Google Cloud Storage V2 connection properties
を参考に接続を作成します。
ランタイム環境
は Hosted Agent
が 使用できる
そうなので、それを使ってみます。
前章で作成した鍵のJSONファイルからそれぞれ、
Service Account ID
→ client_email
、
Service Account Key
→ private_key
、
Project ID
→ project_id
の値を設定します。
ちなみに、前章で触れた storage.buckets.list
権限が無いと、
接続のテスト時に↓のようなエラーになりました。
(次章のマッピングを作るところでも似たようなエラーになりました。)
動かしてみる
マッピングを使って処理をしてみます。
名前をつけます。
ソース側の設定をしていきます。ガイドは こちら 。
作成したGCSの接続を指定し、 オブジェクト
からバケット上のファイルを指定します。
ただし、今回は単一のファイルではなく、フォルダ配下をまるっと読み込みたいので、
下部の詳細フォームの Is Directory
を有効にします。
Is Directory
については ガイドに説明
があり、要は「一度に子のフォルダまでは読まないよ」「全て同じレイアウトのファイルにしてね」って感じのようです。
「データのプレビュー」をすると、↓こんな感じ。
ターゲット側も設定します。ガイドは こちら 。
同様に、作成したGCSの接続を指定し設定します。
オブジェクト
は「選択」ボタンから新規作成にしました。
保存して、実行してみます。
「マイジョブ」から結果を確認できます。
30分ちょっとかかりましたが成功しました!
(所要時間は、今回ファイル数が多いことや、Hosted Agentを使用していることが影響しているかもしれません。)
「成功した行」の数も元のデータと一致しています。
↓想定のフォルダにParquetファイルに変換されて出力されていました。
(↑ ParquetViewer
を使って中身を確認しています。)
おわりに
行数多めのデータで試してみましたが、無事GCSとやり取りができました。 ファイルの形式変換も設定だけでできたのは楽で良いですね。